// 版权声明，Epic Games 公司保留所有权利

#include "LyraInventoryItemDefinition.h"

#include "Templates/SubclassOf.h"
#include "UObject/ObjectPtr.h"

#include UE_INLINE_GENERATED_CPP_BY_NAME(LyraInventoryItemDefinition)

//////////////////////////////////////////////////////////////////////
// ULyraInventoryItemDefinition

/**
 * 构造函数
 * @param ObjectInitializer 对象初始化器
 */
ULyraInventoryItemDefinition::ULyraInventoryItemDefinition(const FObjectInitializer& ObjectInitializer)
	: Super(ObjectInitializer)
{
}

/**
 * 根据片段类查找片段
 * @param FragmentClass 片段类
 * @return 找到的片段，未找到返回nullptr
 */
const ULyraInventoryItemFragment* ULyraInventoryItemDefinition::FindFragmentByClass(TSubclassOf<ULyraInventoryItemFragment> FragmentClass) const
{
	if (FragmentClass != nullptr)
	{
		// 遍历所有片段
		for (ULyraInventoryItemFragment* Fragment : Fragments)
		{
			if (Fragment && Fragment->IsA(FragmentClass))
			{
				return Fragment; // 返回找到的片段
			}
		}
	}

	return nullptr; // 未找到返回nullptr
}

//////////////////////////////////////////////////////////////////////
// ULyraInventoryItemDefinition

/**
 * 查找物品定义片段
 * @param ItemDef 物品定义类
 * @param FragmentClass 片段类
 * @return 找到的片段，未找到返回nullptr
 */
const ULyraInventoryItemFragment* ULyraInventoryFunctionLibrary::FindItemDefinitionFragment(TSubclassOf<ULyraInventoryItemDefinition> ItemDef, TSubclassOf<ULyraInventoryItemFragment> FragmentClass)
{
	if ((ItemDef != nullptr) && (FragmentClass != nullptr))
	{
		return GetDefault<ULyraInventoryItemDefinition>(ItemDef)->FindFragmentByClass(FragmentClass); // 获取默认对象并查找片段
	}
	return nullptr; // 参数无效返回nullptr
}